home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1994 March / Internet Info CD-ROM (Walnut Creek) (March 1994).iso / networking / ip / slip / dynix / slip.dynix.patch < prev    next >
Text File  |  1991-07-12  |  3KB  |  125 lines

  1. Diff's to if_sl.c in ftp.uu.net/networking/slip/slip.dynix.tar.Z
  2. Courtesy of dls@mentor.cc.purdue.edu
  3.  
  4.  
  5. *** if_sl.c    (OLD)    Mon Sep 26 15:26:21 1988
  6. --- if_sl.c    (NEW)    Wed Jun 19 13:05:32 1991
  7. ***************
  8. *** 186,192 ****
  9.       struct sockaddr *dst;
  10.   {
  11.       register struct sl_softc *sc;
  12. !     spl_t s;
  13.   
  14.       /*
  15.        * `Cannot happen' (see slioctl).  Someday we will extend
  16. --- 186,192 ----
  17.       struct sockaddr *dst;
  18.   {
  19.       register struct sl_softc *sc;
  20. !     spl_t s, sipl;
  21.   
  22.       /*
  23.        * `Cannot happen' (see slioctl).  Someday we will extend
  24. ***************
  25. *** 211,218 ****
  26. --- 211,220 ----
  27.           m_freem(m);
  28.           return (EHOSTUNREACH);
  29.       }
  30. +     sipl = IF_LOCK(&ifp->if_snd);
  31.       if (IF_QFULL(&ifp->if_snd)) {
  32.           IF_DROP(&ifp->if_snd);
  33. +         IF_UNLOCK(&ifp->if_snd, sipl);
  34.           m_freem(m);
  35.           sc->sc_if.if_oerrors++;
  36.           printf("sl%d: output queue overflow\n", ifp->if_unit);
  37. ***************
  38. *** 220,225 ****
  39. --- 222,228 ----
  40.           return (ENOBUFS);
  41.       }
  42.       IF_ENQUEUE(&ifp->if_snd, m);
  43. +     IF_UNLOCK(&ifp->if_snd, sipl);
  44.       if ((sc->sc_flags & SC_OACTIVE) == 0) {
  45.           v_lock(&sc->softc_lock, s);
  46.           slstart(sc->sc_ttyp);
  47. ***************
  48. *** 242,248 ****
  49.       register int len;
  50.       register u_char *cp;
  51.       int flush, nd, np, n;
  52. !     spl_t s;
  53.       struct mbuf *m2;
  54.       extern int cfreecount;
  55.   
  56. --- 245,251 ----
  57.       register int len;
  58.       register u_char *cp;
  59.       int flush, nd, np, n;
  60. !     spl_t s, sipl;
  61.       struct mbuf *m2;
  62.       extern int cfreecount;
  63.   
  64. ***************
  65. *** 280,286 ****
  66. --- 283,291 ----
  67.           /*
  68.            * Get a packet and send it to the interface.
  69.            */
  70. +         sipl = IF_LOCK(&sc->sc_if.if_snd);
  71.           IF_DEQUEUE(&sc->sc_if.if_snd, m);
  72. +         IF_UNLOCK(&sc->sc_if.if_snd, sipl);
  73.           if (m == NULL) {
  74.               if (tp->t_outq.c_cc == 0)
  75.                   sc->sc_flags &= ~SC_OACTIVE;
  76. ***************
  77. *** 436,442 ****
  78.   {
  79.       register struct sl_softc *sc;
  80.       register struct mbuf *m;
  81. !     spl_t s;
  82.   
  83.   
  84.       l.cnt.v_ttyin++;
  85. --- 441,447 ----
  86.   {
  87.       register struct sl_softc *sc;
  88.       register struct mbuf *m;
  89. !     spl_t s, sipl;
  90.   
  91.   
  92.       l.cnt.v_ttyin++;
  93. ***************
  94. *** 485,490 ****
  95. --- 490,496 ----
  96.               sc->sc_mp = mtod(sc->sc_mbuf, char *);
  97.               sc->sc_ilen = 0;
  98.               sc->sc_if.if_ipackets++;
  99. +             sipl = IF_LOCK(&ipintrq);
  100.               if (IF_QFULL(&ipintrq)) {
  101.                   IF_DROP(&ipintrq);
  102.                   sc->sc_if.if_ierrors++;
  103. ***************
  104. *** 494,501 ****
  105.               } else {
  106.                   IF_ENQUEUE(&ipintrq, m);
  107.                   v_lock(&sc->softc_lock, s);
  108. !                 schednetisr(NETISR_IP);
  109.               }
  110.               return;
  111.   
  112.           case FRAME_ESCAPE:
  113. --- 500,509 ----
  114.               } else {
  115.                   IF_ENQUEUE(&ipintrq, m);
  116.                   v_lock(&sc->softc_lock, s);
  117. !                 if (!ipintrq.ifq_busy)
  118. !                     schednetisr(NETISR_IP);
  119.               }
  120. +             IF_UNLOCK(&ipintrq, sipl);
  121.               return;
  122.   
  123.           case FRAME_ESCAPE:
  124.  
  125.